﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LibreriaArticulos;

namespace LibreriaGestion
{
	public class GestorPedidos : IGestorPedidos
	{
		Dictionary<IArticulo, int> pedidos;

		public GestorPedidos()
		{
			pedidos = new Dictionary<IArticulo, int>();
		}

		private void aseguraExistencia(IArticulo articulo)
		{
			if (!pedidos.Keys.Contains(articulo))
				pedidos.Add(articulo, 0);
		}

		#region Miembros de IGestorPedidos

		public void cancelaUnidadesPedidas(IArticulo articulo, int cantidad)
		{
			aseguraExistencia(articulo);

			if (pedidos[articulo] < cantidad)
				pedidos[articulo] = 0;
			else
				pedidos[articulo] -= cantidad;
		}

		public void entregaUnidadesPedidas(IArticulo articulo, int cantidad)
		{
			aseguraExistencia(articulo);

			if (pedidos[articulo] < cantidad)
				pedidos[articulo] = 0;
			else
				pedidos[articulo] -= cantidad;
		}

		public void incrementaUnidadesPedidas(IArticulo articulo, int cantidad)
		{
			aseguraExistencia(articulo);

			pedidos[articulo] += cantidad;
		}

		public int getUnidadesPedidas(IArticulo articulo)
		{
			aseguraExistencia(articulo);

			return pedidos[articulo];
		}

		#endregion

		#region Miembros de IGestorArticulo

		public void eliminaArticulo(IArticulo articulo)
		{
			if (pedidos.ContainsKey(articulo))
				pedidos.Remove(articulo);
		}

		public void addArticulo(IArticulo articulo)
		{
			aseguraExistencia(articulo);
		
		}

		public bool existeArticulo(IArticulo articulo)
		{
			return pedidos.Keys.Contains(articulo);
		}		
		#endregion


	}
}